package AlgoritmosGeneticos.model.impl.cruces;

import java.util.LinkedList;
import java.util.List;
import java.util.Random;


import utils.CustomRandom;

import AlgoritmosGeneticos.model.Individuo;
import AlgoritmosGeneticos.model.OperadorCruce;
import AlgoritmosGeneticos.model.impl.IndividuoImpl;



public class CruceSimple implements OperadorCruce{

	public CruceSimple(){
		super();
		System.out.println("Cruce simple");
	}
	
	@Override
	public  List<Individuo> cruzar(Individuo i1, Individuo i2) {
		LinkedList<Individuo> resp= new LinkedList<Individuo>();
		int rand = CustomRandom.getInstance().getRandomInt(i1.length());
		String hijo1 = i1.getNumenoBinario().substring(0, rand);
		hijo1 = hijo1+ i2.getNumenoBinario().substring(rand, i2.length());
		String hijo2 = i2.getNumenoBinario().substring(0, rand);
		hijo2 = hijo2 + i1.getNumenoBinario().substring(rand, i1.length());
		resp.add(new IndividuoImpl(hijo1,i1.getpMut()));
		resp.add(new IndividuoImpl(hijo2,i2.getpMut()));
		return resp;
	}
}
